

package org.finegold.core.tenant.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.finegold.core.tenant.FineTenantHolder;
import org.finegold.core.tenant.annotation.TenantIgnore;

/**
 * 自定义租户切面
 *
 * @author QinXueFeng
 */
@Slf4j
@Aspect
public class FineTenantAspect {

	@Around("@annotation(tenantIgnore)")
	public Object around(ProceedingJoinPoint point, TenantIgnore tenantIgnore) throws Throwable {
		//开启忽略
		org.finegold.core.tenant.FineTenantHolder.setIgnore(Boolean.TRUE);
		//执行方法
		Object result = point.proceed();
		//关闭忽略
		org.finegold.core.tenant.FineTenantHolder.clear();
		return result;
	}

}
